package gui;

import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;

/**
 * 自定义窗体
 * 继承JFrame
 *
 * 窗体默认的布局管理器： 边框管理器
 * 一旦容器使用了 边框管理器  、 流布局管理器、 网格管理器、卡片布局管理器
 * 使用自定义大小组件是无效的
 * 要使用自定义大小，必须使用空布局管理器
 */
public class MyJFrame extends JFrame {

    // 容器中的组件会被作为属性来使用
    private JButton jButton;  // 容器中的按钮

    private JLabel jLabel;  // 容器中的标签
    private JLabel jLabe2;
    private JLabel jLabe3;
    private JLabel jLabe4;

    private JTextField jTextField; // 单行文本框
    private JTextField jTextField2; // 单行文本框

    private JPasswordField jPasswordField; // 密码框

    private JRadioButton jRadioButton1; // 单选框
    private JRadioButton jRadioButton2;

    private JTextArea jTextArea;  // 多行文本

    private JCheckBox jCheckBox, jCheckBox2, jCheckBox3;  // 复选框

    private JComboBox jComboBox; // 下拉菜单

    // 窗体的创建放到构造函数种
    public MyJFrame(){
        // 设置窗体大小
        this.setSize(500, 500);

        // 设置居中
        this.setLocationRelativeTo(null);

        // 退出并关闭窗体
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置窗体可见
        this.setVisible(true);

        // 设置不可改变大小
        this.setResizable(false);

        // 设置该窗体为空布局（绝对布局）管理器
        this.setLayout(null);

        // 创建标签
        jLabel = new JLabel("用户名");
        jLabel.setBounds(50, 50, 50, 50);
        jLabe2 = new JLabel("密码");
        jLabe2.setBounds(50, 80, 50, 50);
        jLabe3 = new JLabel("性别");
        jLabe3.setBounds(50, 110, 50, 50);
//        jLabe3 = new JLabel("爱好");
//        jLabe3.setBounds(50, 150, 50, 50);

        // 创建一个按钮
        jButton = new JButton("登录");
        // 设置按钮大小
        jButton.setSize(100, 100);
        // 设置按钮位置
        jButton.setLocation(420, 50);

        // 创建单行文本框
        jTextField = new JTextField();
        jTextField.setBounds(100, 65, 100, 20);
        // 创建密码框
        jPasswordField = new JPasswordField();
        jPasswordField.setBounds(100, 95, 100, 20);

        // 创建单选按钮
        jRadioButton1 = new JRadioButton("男");
        jRadioButton2 = new JRadioButton("女");
        jRadioButton1.setBounds(100, 127, 20, 20);
        jRadioButton2.setBounds(150, 127, 20, 20);

        // 创建一个按钮组
        ButtonGroup bg = new ButtonGroup();
        bg.add(jRadioButton1);  // 将单选按钮加入按钮组
        bg.add(jRadioButton2);

//        // 创建复选框
//        jCheckBox = new JCheckBox("音乐");
//        jCheckBox.setBounds(100, 180, 20, 20);
//        jCheckBox2 = new JCheckBox("运动");
//        jCheckBox2.setBounds(100, 280, 20, 20);
//        jCheckBox3 = new JCheckBox("游戏");
//        jCheckBox3.setBounds(100, 380, 20, 20);

        // 多行文本
        jTextArea = new JTextArea();
        jTextArea.setBounds(300,300,100,100);
        jTextArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));

        // 下拉菜单
        jComboBox = new JComboBox(new String[]{"aaa", "bbb", "ccc", "ddd", "eee"});
        jComboBox.setBounds(200, 200, 100, 20);


        // 添加按钮
        this.add(jButton);
        // 添加标签
        this.add(jLabel);
        this.add(jLabe2);
        this.add(jLabe3);
//        this.add(jLabe4);
        // 添加单行文本
        this.add(jTextField);
        // 添加密码框
        this.add(jPasswordField);
        // 添加单选框
        this.add(jRadioButton1);
        this.add(jRadioButton2);
        // 添加复选框
//        this.add(jCheckBox);
//        this.add(jCheckBox2);
//        this.add(jCheckBox3);

        this.add(jTextArea);
        this.add(jComboBox);

        // 设置窗体背景颜色
        this.getContentPane().setBackground(Color.WHITE);
    }
}
